let Node = require('./node');

class Scene extends Node {

    constructor() {
        super();
        this._lstUpdate = [];
        this._frameIdx = 0;
        this._lstRender = [];
    }

    // 首次进入的时候 调用
    onEnable(){
        super.onEnable();
    }

    updateScene() {
        this._lstUpdate.length = 0;
        this._visitForUpdate(this._lstUpdate);

        this._frameIdx++;

        // 开始更新
        this._lstUpdate.forEach(node => {
            if (node.enabled && node.visible) {
                node.update();
            }
        });
    }

    renderScene() {

        //  更新场景矩阵
        this._updateSceneGraphMatrix();

        this._lstRender.length = 0;
        this._visitForRender(this._lstRender);

        let gl = this._gl;
        gl.clear(gl.COLOR_BUFFER_BIT);

        // 开始绘制
        this._lstRender.forEach(renderItem => {
            renderItem.render();
        });
    }

}

module.exports = Scene;




// let Node = require('./node');
// // let glUtils = require('../utils/glUtils');
//
// class Scene extends Node {
//
//     constructor() {
//         super();
//         this._lstUpdate = [];
//         this._frameIdx = 0;
//         this._lstRender = [];
//     }
//
//     updateScene() {
//         this._lstUpdate.length = 0;
//         this._visitForUpdate(this._lstUpdate);
//
//         this._frameIdx++;
//         //console.log(`frameIndex:${this._frameIdx}. _lstUpdate.length:${this._lstUpdate.length}`);
//
//         // 开始更新
//         this._lstUpdate.forEach(node => {
//             if (!node._bDestroyed && node._prop.isVisible()) {
//                 node.update();
//             }
//         });
//     }
//
//     renderScene() {
//         this._lstRender.length = 0;
//         this._visitForRender(this._lstRender);
//
//         let gl = window.app.gl;
//         gl.clear(gl.COLOR_BUFFER_BIT);
//
//         // 开始绘制
//         this._lstRender.forEach(renderItem => {
//             renderItem.render();
//         });
//     }
// }
//
// module.exports = Scene;
